﻿using FrameWork.Core.Configuration;
using Prism.Ioc;
using System;
using System.Collections.Generic;

namespace FrameWork.Core.Infrastructure
{
    public interface IEngine
    {
        IContainerExtension ContainerManager { get; }

        void Initialize(InvengoConfig config, IContainerExtension containerExtension);

        T Resolve<T>() where T : class;

        T Resolve<T>(string name) where T : class;

        IEnumerable<T> ResolveAll<T>();

        object Resolve(Type type);

        bool IsRegistered<T>(string pageName);

        object ResolveUnregistered(Type type);
    }
}